package com.hengyu.data.validator.factory.validators;

import com.hengyu.data.validator.annotation.Range;
import com.hengyu.data.validator.enums.TypeEnum;
import com.hengyu.data.validator.util.TypeUtils;

import java.lang.reflect.Field;

/**
 * 项目名称：HengYuDataValidator
 * 项目版本：V1.0
 * 包名称：com.hengyu.data.validator.factory.validators
 * 创建人：yuqy
 * 创建时间：2017/3/20 10:51
 * 修改人：yuqy
 * 修改时间：2017/3/20 10:51
 * 修改备注：
 */
public class RangeValidator implements Validator
{
    /**
     * 执行验证方法
     *
     * @param field  验证字段反射对象
     * @param object 字段所在对象实体
     * @throws Exception 抛出异常消息
     */
    public boolean validate(Field field, Object object) throws Exception {
        //获取注解内容
        Range range = field.getAnnotation(Range.class);
        //最小值
        long min = range.min();
        //最大值
        long max = range.max();
        //设置访问private字段
        field.setAccessible(true);
        //获取字段值
        Object fieldVal = field.get(object);
        //判断字段值得类型是否存在于TypeEnum数组内
        boolean isType = TypeUtils.isTargetType(new TypeEnum[]
                {
                        TypeEnum.INT,
                        TypeEnum.LONG,
                        TypeEnum.DOUBLE,
                        TypeEnum.FLOAT,
                        TypeEnum.INTEGER
                }
                ,fieldVal.getClass());
        //如果存在则可以执行验证，如果不存在则直接返回true，不执行验证
        if(isType)
        {

        }
        return true;
    }
}
